package System_code;

import java.util.concurrent.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ling
 * Date: 2022-08-30
 * Time: 17:48
 */
/**
 * 使用ThreadPoolExecutor创建一个忽略最新任务的线程池，创建规则：
 * 1.核心线程数为5
 * 2.最大线程数为10
 * 3.任务队列为100
 * 4.拒绝策略为忽略最新任务
 *
 */
public class ThreadPoolExecutorDemo {
    public static void main(String[] args) throws InterruptedException {
        // 依题意创建线程池
        ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(5, // 核心线程数
                10, // 最大线程数
                3, // 线程空闲时长
                TimeUnit.SECONDS, // 线程空闲时长的时间单位
                new LinkedBlockingQueue<>(100), // 任务队列
                new ThreadPoolExecutor.DiscardPolicy()); // 拒绝策略为忽略最新任务
        // 测试执行
        for(int i=0;i<100;i++) {
           int j=i;
           poolExecutor.submit(new Runnable() {
               @Override
               public void run() {
                   System.out.println(j);
               }
           });
       }
        // 测试执行
//        for (int i = 0; i < 2000; i++) {
//            new Thread(() -> {
//                System.out.println(Thread.currentThread().getName() + "已执行.");
//            },"thread-" + (i + 1)).start();
//        }
    }
}
